home *** CD-ROM | disk | FTP | other *** search
- /* date2day
- (c) Armin.Obersteiner@giga.or.at
-
- input: <int> day,month,year
- output:<int> 0,1-7
-
- 0: error (before 1.1.1801 - this should be enough
- if somebody knows a "day" before that please mail it to me)
-
- 1-7: Monday-Sunday
-
- gcc: link with math lib !!
- */
-
- int date2day(int day,int month,int year)
- {
- int md[12]={31,28,31,30,31,30,31,31,30,31,30,31};
-
- int j,i=0;
- int jahr=0;
- int s;
-
- if(year<1801) return 0;
- if( (month<1) || (month>12) ) return 0;
- if(day<1) return 0;
-
- s=sjahr(year);
-
- if( (day>md[month-1]) )
- {
- if(!s) return 0;
- if( (s) && (month=2) && (day>29) ) return 0;
- }
-
- for(j=1801;j<year;j++) if(sjahr(j)) i++;
-
- jahr=(year-1801)*365+i+day;
-
- for(i=1;i<month;i++) jahr=jahr+md[i-1];
- if(s && (month>2)) jahr=jahr+1;
-
- switch((int)fmod((double)jahr,(double)7))
- {
- case 1: return 4; /* 1.1.1801 is a Thursday ->4 */
- break;
- case 2: return 5;
- break;
- case 3: return 6;
- break;
- case 4: return 7;
- break;
- case 5: return 1;
- break;
- case 6: return 2;
- break;
- case 0: return 3;
- break;
- }
- }
-
- /* sjahr
- (c) Armin.Obersteiner@giga.or.at
-
- input: <int> year
- output: <int> 0,1
-
- 0: normal year
- 1: leap-year
-
- gcc: link with math lib !!
- */
-
- int sjahr(int year)
- {
- int schalt=0;
-
- if(fmod((double)year,(double)4)==0) schalt=1;
- if(fmod((double)year,(double)100)==0) if(fmod((double)year,(double)400)!=0) schalt=0;
-
- return schalt;
- }
-